package offer.offer01;

/**
 * 快慢指针, 或者先数一下总长度, 再走一遍总长-k步, 时间应该差不多。
 */
public class S22链表中倒数第k个节点 {
    //100, 100, 快慢指针, 快指针先走k步, 然后快慢指针一起走, 快指针到了的时候慢指针就是倒数第k个
    public ListNode getKthFromEnd(ListNode head, int k) {
        if(head == null)
            return null;
        ListNode resultNode = head;
        ListNode tmpNode1 = head.next;
        for(; k > 1; k--){
            if(tmpNode1 != null){
                tmpNode1 = tmpNode1.next;
            }else{
                return null;
            }
        }

        while(tmpNode1 != null){
            resultNode = resultNode.next;
            tmpNode1 = tmpNode1.next;
        }
        return resultNode;
    }
}
